d740801 在 啟用系統管理員 Administrator 帳戶 裡,
提及在 windows 7/Vista 如何啟用最高權限帳號的作法,
也來提一下在Linux裡常會用到的sudo的設定議題。
在 Linux 常用 sudo 來做一些最高權限能做的事,
通常是依照著 /etc/sudoers 裡的規則來允許運作。
這幅簡筆漫畫蠻有趣,
甲:給我做個三明治。
乙:什麼?你自個兒做,老子可不管你。
甲:sudo 給我做個三明治。
乙:好的!馬上做個三明治。
簡單地說,甲對乙原來沒有什麼權限,
但藉著 sudo 就有那權限來執行。
用 sudo 的最大好處有二:
1.確認能執行的權限。
2.會記錄什麼使用者做了什麼動作。
為了要用 sudo 的指令,首先要設定 sudoers 這檔,
但 不要直接編輯此檔案!
要編輯的話,要執行
visudo
然後最容易有機會看到像:
root ALL=(ALL) ALL
這行意思是,使用者root能從所有的終端機,
以任何所有使用者的身分,
來執行所有任何的指令。
所以第一部分是什麼使用者,
第二部分是使用者從哪個終端機能執行sudo,
第三部分是哪個使用者能執行,
最後部分是他能跑什麼指令。
上面的一堆ALL會搞不清楚,
用另個例子來看看:
operator ALL= /sbin/poweroff
這是指使用者 operator 能從任何終端機,
來執行 poweroff 的關機指令。
而這些各部分,也都可以用別名alias的方式來替帶,例如:
User_Alias OPERATORS = joe, mike, jude
Runas_Alias OP = root, operator
Host_Alias OFNET = 10.1.2.0/255.255.255.0
Cmnd_Alias PRINTING = /usr/sbin/lpc, /usr/bin/lprm
可看到別名OPERATORS是包含joe, mike, jude的使用者,
而別名OP是包括 root, operator。
別名OFNET是包括10.1.2.0的整個Class C來的範圍,
別名PRINTING是包括 lpc 及 lprm指令。
所以通常看sudoers的檔案,可能類似像這樣:
User_Alias OPERATORS = joe, mike, jude
Runas_Alias OP = root, operator
Host_Alias OFNET = 10.1.2.0/255.255.255.0
Cmnd_Alias PRINTING = /usr/sbin/lpc, /usr/bin/lprm
OPERATORS ALL=ALL
linus ALL=(OP) ALL
user2 OFNET=(ALL) ALL
user3 ALL= PRINTING
go2linux ALL=(ALL) ALL
如果執行sudo想要省掉輸入密碼的驗證動作的麻煩的話:
go2linux ALL=(ALL) ALL NO PASSWD: ALL
詳細的設定說明可參閱 手冊
而sudo用的是vi編輯器,
以下是怎麼操作vi的步驟:
1.變成root,執行visudo
2.找到 "root ALL=(ALL) ALL" 這一行,並將游標移到該行。
3.鍵入 o 可在該行下面插入新的一行。
4.輸入想要的規則,例如:username ALL=(ALL) ALL
5.按Esc鍵退出插入模式
6.鍵入 :x 儲存並退出。
本文簡譯自:http://www.go2linux.org/sudoers-man-page